package com.spring.sunflower.bean;

import com.chad.library.adapter.base.entity.MultiItemEntity;
//import com.tencent.imsdk.TIMMessage;
import com.tencent.imsdk.v2.V2TIMCustomElem;
import com.tencent.imsdk.v2.V2TIMFaceElem;
import com.tencent.imsdk.v2.V2TIMFileElem;
import com.tencent.imsdk.v2.V2TIMGroupTipsElem;
import com.tencent.imsdk.v2.V2TIMImageElem;
import com.tencent.imsdk.v2.V2TIMLocationElem;
import com.tencent.imsdk.v2.V2TIMMessage;
import com.tencent.imsdk.v2.V2TIMOfflinePushInfo;
import com.tencent.imsdk.v2.V2TIMSoundElem;
import com.tencent.imsdk.v2.V2TIMTextElem;
import com.tencent.imsdk.v2.V2TIMVideoElem;

import java.util.List;

/**
 * Created by Kevin on 2021/6/5<br/>
 * <p>
 * Describe:<br/>
 */
public class MessageEntity extends V2TIMMessage implements MultiItemEntity {
    /**
     * 文本类型消息
     */
    public static final int MSG_TYPE_TEXT = 1;
    /**
     * 图片类型消息
     */
    public static final int MSG_TYPE_IMAGE = 3;
    /**
     * 语音类型消息
     */
    public static final int MSG_TYPE_AUDIO = 4;
    /**
     * 视频类型消息
     */
    public static final int MSG_TYPE_VIDEO = 5;
    /**
     * 文件类型消息
     */
    public static final int MSG_TYPE_FILE = 6;
    /**
     * 位置类型消息
     */
    public static final int MSG_TYPE_LOCATION = 7;

    /**
     * 自定义图片类型消息
     */
    public static final int MSG_TYPE_CUSTOM_FACE = 8;
    /**
     * 自定义消息
     */
    public static final int MSG_TYPE_CUSTOM = 2;

    /**
     * 提示类信息
     */
    public static final int MSG_TYPE_TIPS = 0x100;
    /**
     * 群创建提示消息
     */
    public static final int MSG_TYPE_GROUP_CREATE = 0x101;
    /**
     * 群解散提示消息
     */
    public static final int MSG_TYPE_GROUP_DELETE = 0x102;
    /**
     * 群成员加入提示消息
     */
    public static final int MSG_TYPE_GROUP_JOIN = 0x103;
    /**
     * 群成员退群提示消息
     */
    public static final int MSG_TYPE_GROUP_QUITE = 0x104;
    /**
     * 群成员被踢出群提示消息
     */
    public static final int MSG_TYPE_GROUP_KICK = 0x105;
    /**
     * 群名称修改提示消息
     */
    public static final int MSG_TYPE_GROUP_MODIFY_NAME = 0x106;
    /**
     * 群通知更新提示消息
     */
    public static final int MSG_TYPE_GROUP_MODIFY_NOTICE = 0x107;
    /**
     * 群音视频呼叫提示消息
     */
    public static final int MSG_TYPE_GROUP_AV_CALL_NOTICE = 0x108;

    /**
     * 消息未读状态
     */
    public static final int MSG_STATUS_READ = 0x111;
    /**
     * 消息删除状态
     */
    public static final int MSG_STATUS_DELETE = 0x112;
    /**
     * 消息撤回状态
     */
    public static final int MSG_STATUS_REVOKE = 0x113;
    /**
     * 消息正常状态
     */
    public static final int MSG_STATUS_NORMAL = 0;
    /**
     * 消息发送中状态
     */
    public static final int MSG_STATUS_SENDING = 1;
    /**
     * 消息发送成功状态
     */
    public static final int MSG_STATUS_SEND_SUCCESS = 2;
    /**
     * 消息发送失败状态
     */
    public static final int MSG_STATUS_SEND_FAIL = 3;
    /**
     * 消息内容下载中状态
     */
    public static final int MSG_STATUS_DOWNLOADING = 4;
    /**
     * 消息内容未下载状态
     */
    public static final int MSG_STATUS_UN_DOWNLOAD = 5;
    /**
     * 消息内容已下载状态
     */
    public static final int MSG_STATUS_DOWNLOADED = 6;
    public int type;
//    private TIMMessage timMessage = new TIMMessage();
    private long timestamp;
    private String sender;
    private String nickName;
    private String friendRemark;
    private String faceUrl;
    private String nameCard;
    private String groupID;
    private String userID;
    private int status;
    private int getElemType;
    private V2TIMTextElem textElem;
    private V2TIMCustomElem customElem;
    private V2TIMImageElem imageElem;
    private V2TIMSoundElem soundElem;
    private V2TIMVideoElem videoElem;
    private V2TIMFileElem fileElem;
    private V2TIMLocationElem locationElem;
    private V2TIMFaceElem faceElem;
    private V2TIMGroupTipsElem groupTipsElem;
    private String localCustomData;
    private int localCustomInt;
    private String cloudCustomData;
    private boolean isSelf;
    private boolean isRead;
    private boolean isPeerRead;
    private int priority;
    private V2TIMOfflinePushInfo offlinePushINfo;
    private long seq;
    private long random;
    private List<String> groupAtUserList;
    private String msgID;

    @Override
    public int getItemType() {
        return type;
    }

    public MessageEntity(int type) {
        this.type = type;
    }

//    public TIMMessage getTimMessage() {
//        return timMessage;
//    }

//    public void setTimMessage(TIMMessage timMessage) {
//        this.timMessage = timMessage;
//    }

    @Override
    public long getTimestamp() {
        return timestamp;
    }

    public void setTimestamp(long timestamp) {
        this.timestamp = timestamp;
    }

    @Override
    public String getSender() {
        return sender;
    }

    public void setSender(String sender) {
        this.sender = sender;
    }

    @Override
    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    @Override
    public String getFriendRemark() {
        return friendRemark;
    }

    public void setFriendRemark(String friendRemark) {
        this.friendRemark = friendRemark;
    }

    @Override
    public String getFaceUrl() {
        return faceUrl;
    }

    public void setFaceUrl(String faceUrl) {
        this.faceUrl = faceUrl;
    }

    @Override
    public String getNameCard() {
        return nameCard;
    }

    public void setNameCard(String nameCard) {
        this.nameCard = nameCard;
    }

    @Override
    public String getGroupID() {
        return groupID;
    }

    public void setGroupID(String groupID) {
        this.groupID = groupID;
    }

    @Override
    public String getUserID() {
        return userID;
    }

    public void setUserID(String userID) {
        this.userID = userID;
    }

    @Override
    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public int getGetElemType() {
        return getElemType;
    }

    public void setGetElemType(int getElemType) {
        this.getElemType = getElemType;
    }

    @Override
    public V2TIMTextElem getTextElem() {
        return textElem;
    }

    public void setTextElem(V2TIMTextElem textElem) {
        this.textElem = textElem;
    }

    @Override
    public V2TIMCustomElem getCustomElem() {
        return customElem;
    }

    public void setCustomElem(V2TIMCustomElem customElem) {
        this.customElem = customElem;
    }

    @Override
    public V2TIMImageElem getImageElem() {
        return imageElem;
    }

    public void setImageElem(V2TIMImageElem imageElem) {
        this.imageElem = imageElem;
    }

    @Override
    public V2TIMSoundElem getSoundElem() {
        return soundElem;
    }

    public void setSoundElem(V2TIMSoundElem soundElem) {
        this.soundElem = soundElem;
    }

    @Override
    public V2TIMVideoElem getVideoElem() {
        return videoElem;
    }

    public void setVideoElem(V2TIMVideoElem videoElem) {
        this.videoElem = videoElem;
    }

    @Override
    public V2TIMFileElem getFileElem() {
        return fileElem;
    }

    public void setFileElem(V2TIMFileElem fileElem) {
        this.fileElem = fileElem;
    }

    @Override
    public V2TIMLocationElem getLocationElem() {
        return locationElem;
    }

    public void setLocationElem(V2TIMLocationElem locationElem) {
        this.locationElem = locationElem;
    }

    @Override
    public V2TIMFaceElem getFaceElem() {
        return faceElem;
    }

    public void setFaceElem(V2TIMFaceElem faceElem) {
        this.faceElem = faceElem;
    }

    @Override
    public V2TIMGroupTipsElem getGroupTipsElem() {
        return groupTipsElem;
    }

    public void setGroupTipsElem(V2TIMGroupTipsElem groupTipsElem) {
        this.groupTipsElem = groupTipsElem;
    }

    @Override
    public String getLocalCustomData() {
        return localCustomData;
    }

    @Override
    public void setLocalCustomData(String localCustomData) {
        this.localCustomData = localCustomData;
    }

    @Override
    public int getLocalCustomInt() {
        return localCustomInt;
    }

    @Override
    public void setLocalCustomInt(int localCustomInt) {
        this.localCustomInt = localCustomInt;
    }

    @Override
    public String getCloudCustomData() {
        return cloudCustomData;
    }

    @Override
    public void setCloudCustomData(String cloudCustomData) {
        this.cloudCustomData = cloudCustomData;
    }

    @Override
    public boolean isSelf() {
        return isSelf;
    }

    public void setSelf(boolean self) {
        isSelf = self;
    }

    @Override
    public boolean isRead() {
        return isRead;
    }

    public void setRead(boolean read) {
        isRead = read;
    }

    @Override
    public boolean isPeerRead() {
        return isPeerRead;
    }

    public void setPeerRead(boolean peerRead) {
        isPeerRead = peerRead;
    }

    @Override
    public int getPriority() {
        return priority;
    }

    public void setPriority(int priority) {
        this.priority = priority;
    }

    public V2TIMOfflinePushInfo getOfflinePushINfo() {
        return offlinePushINfo;
    }

    public void setOfflinePushINfo(V2TIMOfflinePushInfo offlinePushINfo) {
        this.offlinePushINfo = offlinePushINfo;
    }

    @Override
    public long getSeq() {
        return seq;
    }

    public void setSeq(long seq) {
        this.seq = seq;
    }

    @Override
    public long getRandom() {
        return random;
    }

    public void setRandom(long random) {
        this.random = random;
    }

    @Override
    public List<String> getGroupAtUserList() {
        return groupAtUserList;
    }

    public void setGroupAtUserList(List<String> groupAtUserList) {
        this.groupAtUserList = groupAtUserList;
    }

    @Override
    public String getMsgID() {
        return msgID;
    }

    public void setMsgID(String msgID) {
        this.msgID = msgID;
    }

}
